/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * UsuariPanel.java
 * 
 * Panell que realitza el manteniment de la taula users.
 * El manteniment, consisteix en afegir, modificar i eliminar
 * usuaris de la base de dades, amb els controls pertinents
 * bàsics.
 *
 * Created on 29-nov-2011, 6:49:54
 */
package edu.uoc.tdp.pac4.only5.gui.client.panels.manteniment;

import edu.uoc.tdp.pac4.only5.exceptions.EespaisDatabaseException;
import edu.uoc.tdp.pac4.only5.gui.client.panels.AbstractPanel;
import edu.uoc.tdp.pac4.only5.manager.UserManager;
import edu.uoc.tdp.pac4.only5.domain.User;

import java.rmi.RemoteException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.lang.System;

import javax.swing.*;

/**
 *
 * @author Alex
 */
public class UsuariPanel extends AbstractPanel {
    
    private UserManager userManager;
    
    User user = null;
    
    /** Creates new form UsuariPanel */
    public UsuariPanel(UserManager userManager) {
        super();
        initComponents();
        posicioInicialBotons();
        setLabels();
        this.userManager = userManager;
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        txt_AltaUsuari_Usuari = new javax.swing.JTextField();
        lbl_altaUsuari_usuari = new javax.swing.JLabel();
        lbl_usuaris_titol = new javax.swing.JLabel();
        lbl_AltaUsuari_Nom = new javax.swing.JLabel();
        lbl_AltaUsuari_Cognoms = new javax.swing.JLabel();
        lbl_AltaUsuari_Empresa = new javax.swing.JLabel();
        lbl_AltaUsuari_Adreca = new javax.swing.JLabel();
        lbl_AltaUsuari_CodPos = new javax.swing.JLabel();
        lbl_AltaUsuari_Ciutat = new javax.swing.JLabel();
        lbl_AltaUsuari_Telefon = new javax.swing.JLabel();
        lbl_AltaUsuari_Movil = new javax.swing.JLabel();
        lbl_AltaUsuari_TipusUsuari = new javax.swing.JLabel();
        lbl_AltaUsuari_Contrasenya = new javax.swing.JLabel();
        lbl_AltaUsuari_Correu = new javax.swing.JLabel();
        btn_AltaUsuari_Validar = new javax.swing.JButton();
        btn_AltaUsuari_Cancelar = new javax.swing.JButton();
        btn_AltaUsuari_Modificar = new javax.swing.JButton();
        txt_AltaUsuari_Cog1 = new javax.swing.JTextField();
        txt_AltaUsuari_Cog2 = new javax.swing.JTextField();
        txt_AltaUsuari_Empresa = new javax.swing.JTextField();
        txt_AltaUsuari_Adreca = new javax.swing.JTextField();
        txt_AltaUsuari_CodPos = new javax.swing.JTextField();
        txt_AltaUsuari_Ciutat = new javax.swing.JTextField();
        txt_AltaUsuari_Telefon = new javax.swing.JTextField();
        txt_AltaUsuari_Movil = new javax.swing.JTextField();
        txt_AltaUsuari_Tipus = new javax.swing.JTextField();
        txt_AltaUsuari_Contrasenya = new javax.swing.JTextField();
        txt_AltaUsuari_Correu = new javax.swing.JTextField();
        txt_AltaUsuari_Nom = new javax.swing.JTextField();
        btn_AltaUsuari_Alta = new javax.swing.JButton();
        btn_AltaUsuari_Eliminar = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JSeparator();

        setName("MantUser"); // NOI18N
        setPreferredSize(new java.awt.Dimension(550, 500));
        setRequestFocusEnabled(false);

        lbl_altaUsuari_usuari.setText("Usuari");

        lbl_usuaris_titol.setFont(new java.awt.Font("Verdana", 0, 18)); // NOI18N
        lbl_usuaris_titol.setText("Manteniment usuaris");
        lbl_usuaris_titol.setToolTipText("");

        lbl_AltaUsuari_Nom.setText("Nom");

        lbl_AltaUsuari_Cognoms.setText("Cognoms");

        lbl_AltaUsuari_Empresa.setText("Empresa");

        lbl_AltaUsuari_Adreca.setText("Adreça");

        lbl_AltaUsuari_CodPos.setText("Codi postal");

        lbl_AltaUsuari_Ciutat.setText("Ciutat");

        lbl_AltaUsuari_Telefon.setText("Telèfon");

        lbl_AltaUsuari_Movil.setText("Mòvil");

        lbl_AltaUsuari_TipusUsuari.setText("Tipus usuari");

        lbl_AltaUsuari_Contrasenya.setText("Contrasenya");

        lbl_AltaUsuari_Correu.setText("Correu electrònic");

        btn_AltaUsuari_Validar.setText("Validar");
        btn_AltaUsuari_Validar.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        btn_AltaUsuari_Validar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_AltaUsuari_ValidarActionPerformed(evt);
            }
        });

        btn_AltaUsuari_Cancelar.setText("Cancelar");
        btn_AltaUsuari_Cancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_AltaUsuari_CancelarActionPerformed(evt);
            }
        });

        btn_AltaUsuari_Modificar.setText("Modificar");
        btn_AltaUsuari_Modificar.setToolTipText("");
        btn_AltaUsuari_Modificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_AltaUsuari_ModificarActionPerformed(evt);
            }
        });

        txt_AltaUsuari_Cog1.setToolTipText("");

        txt_AltaUsuari_Cog2.setToolTipText("");

        txt_AltaUsuari_Empresa.setBackground(new java.awt.Color(204, 204, 204));
        txt_AltaUsuari_Empresa.setToolTipText("");
        txt_AltaUsuari_Empresa.setName(""); // NOI18N

        txt_AltaUsuari_Adreca.setToolTipText("");

        txt_AltaUsuari_Ciutat.setBackground(new java.awt.Color(204, 204, 204));

        txt_AltaUsuari_Movil.setBackground(new java.awt.Color(204, 204, 204));

        txt_AltaUsuari_Correu.setBackground(new java.awt.Color(204, 204, 204));

        txt_AltaUsuari_Nom.setToolTipText("");

        btn_AltaUsuari_Alta.setText("Alta");
        btn_AltaUsuari_Alta.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_AltaUsuari_AltaActionPerformed(evt);
            }
        });

        btn_AltaUsuari_Eliminar.setText("El·liminar");
        btn_AltaUsuari_Eliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_AltaUsuari_EliminarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lbl_AltaUsuari_Adreca)
                    .addComponent(lbl_AltaUsuari_Telefon)
                    .addComponent(lbl_AltaUsuari_CodPos)
                    .addComponent(lbl_AltaUsuari_Empresa)
                    .addComponent(lbl_AltaUsuari_Correu)
                    .addComponent(lbl_AltaUsuari_Cognoms)
                    .addComponent(lbl_usuaris_titol, javax.swing.GroupLayout.PREFERRED_SIZE, 198, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                .addComponent(lbl_AltaUsuari_Nom, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(lbl_altaUsuari_usuari, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 67, Short.MAX_VALUE))
                            .addComponent(lbl_AltaUsuari_TipusUsuari)
                            .addComponent(btn_AltaUsuari_Alta, javax.swing.GroupLayout.DEFAULT_SIZE, 67, Short.MAX_VALUE))
                        .addGap(59, 59, 59)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(txt_AltaUsuari_Usuari, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(btn_AltaUsuari_Validar))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(txt_AltaUsuari_Empresa, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 365, Short.MAX_VALUE)
                                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(txt_AltaUsuari_Tipus, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                                .addComponent(txt_AltaUsuari_Telefon, javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(txt_AltaUsuari_CodPos, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 79, Short.MAX_VALUE)))
                                        .addGap(29, 29, 29)
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(lbl_AltaUsuari_Contrasenya)
                                            .addComponent(lbl_AltaUsuari_Ciutat)
                                            .addComponent(lbl_AltaUsuari_Movil))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(txt_AltaUsuari_Movil, javax.swing.GroupLayout.DEFAULT_SIZE, 148, Short.MAX_VALUE)
                                            .addComponent(txt_AltaUsuari_Contrasenya, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 148, Short.MAX_VALUE)
                                            .addComponent(txt_AltaUsuari_Ciutat, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 148, Short.MAX_VALUE)))
                                    .addComponent(txt_AltaUsuari_Adreca, javax.swing.GroupLayout.DEFAULT_SIZE, 365, Short.MAX_VALUE)
                                    .addComponent(txt_AltaUsuari_Correu, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 365, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                            .addComponent(txt_AltaUsuari_Nom, javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(txt_AltaUsuari_Cog1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 195, Short.MAX_VALUE))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(txt_AltaUsuari_Cog2, javax.swing.GroupLayout.PREFERRED_SIZE, 163, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(btn_AltaUsuari_Modificar)
                                        .addGap(54, 54, 54)
                                        .addComponent(btn_AltaUsuari_Eliminar)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 86, Short.MAX_VALUE)
                                        .addComponent(btn_AltaUsuari_Cancelar)))
                                .addGap(106, 106, 106))))
                    .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 572, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lbl_usuaris_titol)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txt_AltaUsuari_Usuari, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbl_altaUsuari_usuari)
                    .addComponent(btn_AltaUsuari_Validar))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_AltaUsuari_Nom)
                    .addComponent(txt_AltaUsuari_Nom, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_AltaUsuari_Cognoms)
                    .addComponent(txt_AltaUsuari_Cog1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txt_AltaUsuari_Cog2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_AltaUsuari_Empresa)
                    .addComponent(txt_AltaUsuari_Empresa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_AltaUsuari_Adreca)
                    .addComponent(txt_AltaUsuari_Adreca, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_AltaUsuari_CodPos)
                    .addComponent(txt_AltaUsuari_CodPos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbl_AltaUsuari_Ciutat)
                    .addComponent(txt_AltaUsuari_Ciutat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_AltaUsuari_Telefon)
                    .addComponent(lbl_AltaUsuari_Movil)
                    .addComponent(txt_AltaUsuari_Telefon, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txt_AltaUsuari_Movil, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_AltaUsuari_TipusUsuari)
                    .addComponent(lbl_AltaUsuari_Contrasenya)
                    .addComponent(txt_AltaUsuari_Tipus, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txt_AltaUsuari_Contrasenya, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbl_AltaUsuari_Correu)
                    .addComponent(txt_AltaUsuari_Correu, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(11, 11, 11)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btn_AltaUsuari_Alta)
                    .addComponent(btn_AltaUsuari_Cancelar)
                    .addComponent(btn_AltaUsuari_Modificar)
                    .addComponent(btn_AltaUsuari_Eliminar))
                .addContainerGap(113, Short.MAX_VALUE))
        );

        lbl_usuaris_titol.getAccessibleContext().setAccessibleName("Manteniment usuaris");
        btn_AltaUsuari_Validar.getAccessibleContext().setAccessibleDescription("");

        getAccessibleContext().setAccessibleName("");
    }// </editor-fold>//GEN-END:initComponents

private void btn_AltaUsuari_ValidarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btn_AltaUsuari_ValidarActionPerformed
    // Mira si existeix l'Usuari que es vol donar d'alta
    user = null;
    try {
        user = userManager.getUserById(txt_AltaUsuari_Usuari.getText());
        // Assigna els camps de l'usuari trobat a les caixes
        activaBotonsNoAlta();
        carregaCampsPanel(user);
    }   catch (EespaisDatabaseException ex) {
            Logger.getLogger(UsuariPanel.class.getName()).log(Level.SEVERE, null, ex);
        }   catch (RemoteException ex) {
        txt_AltaUsuari_Nom.setText("Entrar nou usuari");
    } catch(NullPointerException e){
        // Prepara camps per fer l'alta d'usuari.
        activaBotonsAlta();
        netejaCampsPanel();
    }
}//GEN-LAST:event_btn_AltaUsuari_ValidarActionPerformed

private void btn_AltaUsuari_AltaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btn_AltaUsuari_AltaActionPerformed
    user = null;

    try {
        // Amb els camps carregats al panel, es fa l'alta d'usuari
        user = new User();

        if (carregaUser(user)) {
                userManager.addUser(user);
                netejaCampsPanel();
                txt_AltaUsuari_Usuari.setText("");
                posicioInicialBotons();
        }
    } catch (RemoteException ex) {
        Logger.getLogger(UsuariPanel.class.getName()).log(Level.SEVERE, null, ex);
    } catch(NullPointerException e) {
            Logger.getLogger(UsuariPanel.class.getName()).log(Level.SEVERE, null, e);
    }
}//GEN-LAST:event_btn_AltaUsuari_AltaActionPerformed

private void btn_AltaUsuari_EliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btn_AltaUsuari_EliminarActionPerformed
// TODO add your handling code here:
    int optionType = JOptionPane.YES_NO_OPTION;
    int messageType = JOptionPane.INFORMATION_MESSAGE;

    try {
        // Confirmació d'esborrat
        Integer sel = JOptionPane.showConfirmDialog(this,"Segur que vols eliminar aquest usuari?","Manteniment usuaris - Confirmació", optionType, messageType);
        // Esborrat usuari
        String usuari = txt_AltaUsuari_Usuari.getText();
        if (sel != 1) {
            userManager.deleteUser(usuari);
        }
        netejaCampsPanel();
        txt_AltaUsuari_Usuari.setText("");
        posicioInicialBotons();

    } catch (RemoteException ex) {
        Logger.getLogger(UsuariPanel.class.getName()).log(Level.SEVERE, null, ex);
    } catch(NullPointerException e) {}
}//GEN-LAST:event_btn_AltaUsuari_EliminarActionPerformed

private void btn_AltaUsuari_ModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btn_AltaUsuari_ModificarActionPerformed
// TODO add your handling code here:
    user = null;
    int optionType = JOptionPane.YES_NO_OPTION;
    int messageType = JOptionPane.INFORMATION_MESSAGE;

    try {
        // Amb el codi d'usuari, modifica el registre de la taula users
        user = new User();

        if (carregaUser(user)) {
            // Confirmació de la modificacio
            Integer sel = JOptionPane.showConfirmDialog(this,"Segur que vols fer la modificació en aquest usuari?","Manteniment usuaris - Confirmació", optionType, messageType);
            if (sel != 1) {
                userManager.modifyUser(user);
            }
            netejaCampsPanel();
            txt_AltaUsuari_Usuari.setText("");
            posicioInicialBotons();
        }

    } catch (RemoteException ex) {
        Logger.getLogger(UsuariPanel.class.getName()).log(Level.SEVERE, null, ex);
    } catch(NullPointerException e) {}
}//GEN-LAST:event_btn_AltaUsuari_ModificarActionPerformed

private void btn_AltaUsuari_CancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btn_AltaUsuari_CancelarActionPerformed
// TODO add your handling code here:
    netejaCampsPanel();
    txt_AltaUsuari_Usuari.setText("");
    posicioInicialBotons();
}//GEN-LAST:event_btn_AltaUsuari_CancelarActionPerformed
    /**
     * Carrega el registre sobre els camps del panel per a ser mostrats. 
     * @autor Alex
     * @param user
     * @return void
     */
    public void carregaCampsPanel(User user) {
        txt_AltaUsuari_Nom.setText(user.getName());
        txt_AltaUsuari_Cog1.setText(user.getSurname1());
        txt_AltaUsuari_Cog2.setText(user.getSurname2());
        txt_AltaUsuari_Empresa.setText(user.getCompany());
        txt_AltaUsuari_Adreca.setText(user.getAdress());
        txt_AltaUsuari_CodPos.setText(String.valueOf(user.getPostalCode()));
        txt_AltaUsuari_Ciutat.setText(user.getCity());
        txt_AltaUsuari_Telefon.setText(String.valueOf(user.getTelephone()));
        txt_AltaUsuari_Movil.setText(String.valueOf(user.getMobileTelephone()));
        txt_AltaUsuari_Tipus.setText(String.valueOf(user.getRoleId()));
        txt_AltaUsuari_Contrasenya.setText(user.getPassword());
        txt_AltaUsuari_Correu.setText(user.getEmail());    
    }

   /**
     * Netaja els camps del panel. 
     * @autor Alex
     * @param 
     * @return void
     */
public void netejaCampsPanel() {
        txt_AltaUsuari_Usuari.setEnabled(true);
        txt_AltaUsuari_Nom.setText("");
        txt_AltaUsuari_Cog1.setText("");
        txt_AltaUsuari_Cog2.setText("");
        txt_AltaUsuari_Empresa.setText("");
        txt_AltaUsuari_Adreca.setText("");
        txt_AltaUsuari_CodPos.setText("");
        txt_AltaUsuari_Ciutat.setText("");
        txt_AltaUsuari_Telefon.setText("");
        txt_AltaUsuari_Movil.setText("");
        txt_AltaUsuari_Tipus.setText("");
        txt_AltaUsuari_Contrasenya.setText("");
        txt_AltaUsuari_Correu.setText("");
    }

/**
     * Activa el botons amb les accions a fer en la posició inicial.
     * @autor Alex
     * @return void
     */
    public void posicioInicialBotons(){
        btn_AltaUsuari_Alta.setEnabled(false);
        btn_AltaUsuari_Modificar.setEnabled(false);
        btn_AltaUsuari_Eliminar.setEnabled(false);
        btn_AltaUsuari_Cancelar.setEnabled(false);
}
/**
     * Activa el botons amb les accions a fer en la posició "Alta usuari".  
     * @autor Alex
     * @return void
     */
    public void activaBotonsAlta(){
        btn_AltaUsuari_Alta.setEnabled(true);
        btn_AltaUsuari_Modificar.setEnabled(false);
        btn_AltaUsuari_Eliminar.setEnabled(false);
        btn_AltaUsuari_Cancelar.setEnabled(true);
        txt_AltaUsuari_Usuari.setEnabled(true);
}
/**
     * Activa el botons amb les accions a fer en la posició 
     * "Modificar usuari" i "Eliminar usuari".  
     * @autor Alex
     * @return void
     */
    public void activaBotonsNoAlta(){
        btn_AltaUsuari_Alta.setEnabled(false);
        btn_AltaUsuari_Modificar.setEnabled(true);
        btn_AltaUsuari_Eliminar.setEnabled(true);
        btn_AltaUsuari_Cancelar.setEnabled(true);
        txt_AltaUsuari_Usuari.setEnabled(false);
}
    /**
     * Comprova que el camp no sigui NULL
     * @autor Alex
     * @param camp a validar, nom camp a validar
     * @return true/false
     */
    public boolean comprovaCampValid(String camp, String titol) {
    int optionType = JOptionPane.DEFAULT_OPTION;
    int messageType = JOptionPane.ERROR_MESSAGE;

        if ( camp != null && !camp.equals("") ) {
            return true;
        } else {
            JOptionPane.showConfirmDialog(this,"Camp "+titol+" obligatori !","Manteniment usuaris - Validació", optionType, messageType);
            return false;
        }
    }

    /**
     * Comprova que el camp sigui nummèric i que no sigui NULL
     * @autor Alex
     * @param camp a validar, nom camp a validar
     * @return true/false
     */
    public boolean comprovaCampValidInt(String camp, String titol) {
    int optionType = JOptionPane.DEFAULT_OPTION;
    int messageType = JOptionPane.ERROR_MESSAGE;

    // Comprova que sigui numèric
    try {
        Integer.parseInt(camp);
        return true;
    } catch (Exception e) {
        JOptionPane.showConfirmDialog(this,"Camp "+titol+" és obligatori i ha de ser numèric !","Manteniment usuaris - Validació", optionType, messageType);
        return false;
    }
    
}

    /**
     * Comprova que el camp sigui nummèric
     * @autor Alex
     * @param camp a validar, nom camp a validar
     * @return true/false
     */
    public boolean carregaUser(User user) {
    boolean totOK = true;
    
    /*
     * Codi Usuari
     */    
    if (comprovaCampValid(txt_AltaUsuari_Usuari.getText(), lbl_altaUsuari_usuari.getText()))
        user.setUserId(txt_AltaUsuari_Usuari.getText());
    else totOK = false;

    /*
     * Contrasenya
     */    
    if (comprovaCampValid(txt_AltaUsuari_Contrasenya.getText(), lbl_AltaUsuari_Contrasenya.getText()))
        user.setPassword(txt_AltaUsuari_Contrasenya.getText());
    else totOK = false;

    /*
     * Nom
     */    
    if (comprovaCampValid(txt_AltaUsuari_Nom.getText(), lbl_AltaUsuari_Nom.getText()))
        user.setName(txt_AltaUsuari_Nom.getText());
    else totOK = false;

    /*
     * Primer cognom
     */    
    if (comprovaCampValid(txt_AltaUsuari_Cog1.getText(), lbl_AltaUsuari_Cognoms.getText()))
        user.setSurname1(txt_AltaUsuari_Cog1.getText());
    else totOK = false;

    /*
     * Segon cognom
     */    
    if (comprovaCampValid(txt_AltaUsuari_Cog2.getText(), lbl_AltaUsuari_Cognoms.getText()))
        user.setSurname2(txt_AltaUsuari_Cog2.getText());
    else totOK = false;
    
    /*
     * Empresa
     */    
    user.setCompany(txt_AltaUsuari_Empresa.getText());
    
    /*
     * Adreça
     */    
    if (comprovaCampValid(txt_AltaUsuari_Adreca.getText(), lbl_AltaUsuari_Adreca.getText()))
        user.setAdress(txt_AltaUsuari_Adreca.getText());
    else totOK = false;

    /*
     * Codi postal
     */    
    if (comprovaCampValidInt(txt_AltaUsuari_CodPos.getText(), lbl_AltaUsuari_CodPos.getText()))
        user.setPostalCode(Integer.parseInt(txt_AltaUsuari_CodPos.getText()));
    else totOK = false;

    /*
     * Ciutat
     */    
    user.setCity(txt_AltaUsuari_Ciutat.getText());

    /*
     * Telèfon fix
     */    
    if (comprovaCampValidInt(txt_AltaUsuari_Telefon.getText(), lbl_AltaUsuari_Telefon.getText()))
        user.setTelephone(Integer.parseInt(txt_AltaUsuari_Telefon.getText()));
    else totOK = false;

    /*
     * Telèfon mòbil
     */    
    //user.setMobileTelephone(Integer.parseInt(txt_AltaUsuari_Movil.getText()));
            
    /*
     * Rol de l'usuari
     */    
    if (comprovaCampValidInt(txt_AltaUsuari_Tipus.getText(), lbl_AltaUsuari_TipusUsuari.getText()))
        user.setRoleId(Integer.parseInt(txt_AltaUsuari_Tipus.getText()));
    else totOK = false;

    /*
     * Correu electrònic
     */    
    user.setEmail(txt_AltaUsuari_Correu.getText());

    return totOK;
}
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btn_AltaUsuari_Alta;
    private javax.swing.JButton btn_AltaUsuari_Cancelar;
    private javax.swing.JButton btn_AltaUsuari_Eliminar;
    private javax.swing.JButton btn_AltaUsuari_Modificar;
    private javax.swing.JButton btn_AltaUsuari_Validar;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JLabel lbl_AltaUsuari_Adreca;
    private javax.swing.JLabel lbl_AltaUsuari_Ciutat;
    private javax.swing.JLabel lbl_AltaUsuari_CodPos;
    private javax.swing.JLabel lbl_AltaUsuari_Cognoms;
    private javax.swing.JLabel lbl_AltaUsuari_Contrasenya;
    private javax.swing.JLabel lbl_AltaUsuari_Correu;
    private javax.swing.JLabel lbl_AltaUsuari_Empresa;
    private javax.swing.JLabel lbl_AltaUsuari_Movil;
    private javax.swing.JLabel lbl_AltaUsuari_Nom;
    private javax.swing.JLabel lbl_AltaUsuari_Telefon;
    private javax.swing.JLabel lbl_AltaUsuari_TipusUsuari;
    private javax.swing.JLabel lbl_altaUsuari_usuari;
    private javax.swing.JLabel lbl_usuaris_titol;
    private javax.swing.JTextField txt_AltaUsuari_Adreca;
    private javax.swing.JTextField txt_AltaUsuari_Ciutat;
    private javax.swing.JTextField txt_AltaUsuari_CodPos;
    private javax.swing.JTextField txt_AltaUsuari_Cog1;
    private javax.swing.JTextField txt_AltaUsuari_Cog2;
    private javax.swing.JTextField txt_AltaUsuari_Contrasenya;
    private javax.swing.JTextField txt_AltaUsuari_Correu;
    private javax.swing.JTextField txt_AltaUsuari_Empresa;
    private javax.swing.JTextField txt_AltaUsuari_Movil;
    private javax.swing.JTextField txt_AltaUsuari_Nom;
    private javax.swing.JTextField txt_AltaUsuari_Telefon;
    private javax.swing.JTextField txt_AltaUsuari_Tipus;
    private javax.swing.JTextField txt_AltaUsuari_Usuari;
    // End of variables declaration//GEN-END:variables

    @Override
    protected void setLabels() {
        // Etiquetes
        lbl_usuaris_titol.setText(getText("lbl_usuaris_titol"));

        lbl_AltaUsuari_Adreca.setText(getText("lbl_AltaUsuari_Adreca"));
        lbl_AltaUsuari_Ciutat.setText(getText("lbl_AltaUsuari_Ciutat"));
        lbl_AltaUsuari_CodPos.setText(getText("lbl_AltaUsuari_CodPos"));
        lbl_AltaUsuari_Cognoms.setText(getText("lbl_AltaUsuari_Cognoms"));
        lbl_AltaUsuari_Contrasenya.setText(getText("lbl_AltaUsuari_Contrasenya"));
        lbl_AltaUsuari_Correu.setText(getText("lbl_AltaUsuari_Correu"));
        lbl_AltaUsuari_Empresa.setText(getText("lbl_AltaUsuari_Empresa"));
        lbl_AltaUsuari_Movil.setText(getText("lbl_AltaUsuari_Movil"));
        lbl_AltaUsuari_Nom.setText(getText("lbl_AltaUsuari_Nom"));
        lbl_AltaUsuari_Telefon.setText(getText("lbl_AltaUsuari_Telefon"));
        lbl_AltaUsuari_TipusUsuari.setText(getText("lbl_AltaUsuari_TipusUsuari"));
        lbl_altaUsuari_usuari.setText(getText("lbl_altaUsuari_usuari"));

        //Botons
        btn_AltaUsuari_Alta.setText(getText("btn_AltaUsuari_Alta")); 
        btn_AltaUsuari_Cancelar.setText(getText("btn_AltaUsuari_Cancelar")); 
        btn_AltaUsuari_Eliminar.setText(getText("btn_AltaUsuari_Eliminar")); 
        btn_AltaUsuari_Modificar.setText(getText("btn_AltaUsuari_Modificar")); 
        btn_AltaUsuari_Validar.setText(getText("btn_AltaUsuari_Validar")); 
    }
}
